1. Technical Field
The invention is related to media communications via lossy or unreliable networks such as the internet, and in particular, to a technique for providing dynamic rate/distortion-based forward error correction (FEC) for optimizing real-time media transmissions (e.g., voice, video, two-way communications, etc.) across lossy networks.
2. Related Art
Reliable delivery of an audio or video media transmission, or of some combination thereof over an inherently unreliable packet-based network such as the Internet, is a challenging task. During any given network connection between two or more computing devices (e.g., client computers, server computers, phones, etc.), the available bandwidth and connection reliability between those computing devices can vary greatly. As a result, individual data packets representing encoded portions of the media transmission can be lost or delayed. Consequently, it is difficult to guarantee a smooth and consistent playback quality for real-time media transmissions such as real-time communications or live transmissions between devices.
For example, as is well known to those skilled in the art, the bandwidth available to networks such as the Internet fluctuates over time for reasons such as network traffic, number of users, etc. Consequently, the available bandwidth between any two or more computing devices, will typically fluctuate during any given connection session. Such variance in available bandwidth is not typically of great concern, however, with real-time or near real-time media transmissions, the fluctuations can result in drastic changes in the quality of the media playback over time, along with noticeable artifacts in the playback as the playback quality changes.
Another problem frequently observed with networks such as the Internet is that because such networks have very little guarantee of quality of service (QoS), data packets are often lost or delayed during transmission. Consequently, data packets comprising portions of media transmissions may arrive either late or out of sequence, or may not arrive at all. Further, where data packets representing a media transmission are lost or delayed beyond a predetermined minimum time constraint, the result is typically a degraded playback of that media transmission. Such loss or delay tends to produce noticeable artifacts in the media playback as the encoded packets are decoded and combined for playback on the computing device.
Because lost packets can seriously degrade media playback, several schemes have been developed to address occasional packet loss. For example, several conventional schemes use an Automatic Retransmission Request (ARQ) which retransmits lost packets after the server receives a negative acknowledgement (NACK) from the client for any given packet. Unfortunately, ARQ-type schemes typically introduce unacceptable delays with respect to real-time transmissions such as two-way voice communications, for example. Further, such schemes begin to degrade rapidly as the packet loss ratio increases.
Another conventional scheme, Forward Error Correction (FEC) addresses the packet loss problem by transmitting redundant bits along with the data packets of the media file. These redundant bits are usually an arithmetic combination of original bits, and are used to recover or regenerate lost data packets by using the received data packets along with the redundant information to recreate lost packets. In other words, traditional FEC techniques transmit redundant information such that even if there are errors or losses in transmission, every bit is correctly received. The emphasis is not on what the bits mean, or how important each bit is, but on the primary goal of receiving every bit intact. Such schemes generally provide for a fairly reliable media transmission where the packet loss ratio is low. However, as the packet loss ratio increases, the ability of FEC schemes to recover lost packets quickly degrades, thereby again causing the playback of the media transmission to degrade. Further, because of delays inherent in many FEC-based schemes, and because of the additional bandwidth required by such schemes, the ability to use FEC to correct transmission errors is generally constrained with respect to real-time applications having limited bandwidth such as two-way speech or live media transmissions.